import axios from 'axios'
import store from '@/store/index.js'
import config from './baseUrl'
import router from '@/router'
import {
	Message
} from 'element-ui'
const http = {}
let baseURL = config[`baseUrl`]
console.log('baseURL===>',baseURL)
axios.defaults.withCredebtials = true
var instance = axios.create({
	timeout: 30000,
	baseURL,
	withCredentials: true,
	validateStatus(status) {
		switch (status) {
			case 400:
				Message.error('请求出错')
				break
			case 401:
				Message.warning({
					message: '授权失败，请重新登录'
				})
				store.commit('LOGIN_OUT')
				setTimeout(() => {
					window.location.reload()
				}, 1000)
				return
			case 403:
				Message.warning({
					message: '拒绝访问'
				})
				break
			case 404:
				Message.warning({
					message: '请求错误,未找到该资源'
				})
				break
			case 500:
				Message.warning({
					message: '服务端错误'
				})
				break
		}
		return status >= 200 && status < 300
	}
})

// 添加请求拦截器
instance.interceptors.request.use(
	function(config) {
		// 请求头添加token
		if (store.state.UserToken) {
			config.headers.Authorization = `Bearer ${store.state.UserToken}`
		}
		return config
	},
	function(error) {
		return Promise.reject(error)
	}
)

// 响应拦截器即异常处理
instance.interceptors.response.use(
	response => {
		return response.data
	},
	err => {
		if (err && err.response) {} else {
			err.message = '连接服务器失败'
		}
		Message.error({
			message: err.message
		})
		return Promise.reject(err.response)
	}
)

http.get = function(url, options) {
	let loading
	if (!options || options.isShowLoading !== false) {
		loading = document.getElementById('ajaxLoading')
		loading.style.display = 'block'
	}
	let params = {
		params: options
	}
	return new Promise((resolve, reject) => {
		instance
			.get(url, params)
			.then(response => {
				if (!options || options.isShowLoading !== false) {
					loading = document.getElementById('ajaxLoading')
					loading.style.display = 'none'
				}
				if (response.respCode.code === 'EDI-10000') {
					resolve(response.data)
				} else if (response.respCode.code == 'EDI-30042') {
					router.push('/login')
				} else {
					Message.error({
						message: response.respCode.message
					})
					reject(response.respCode.code)
				}
			})
			.catch(e => {
				console.log(e)
			})
	})
}

http.post = function(url, data, options) {
	let loading
	if (!options || options.isShowLoading !== false) {
		loading = document.getElementById('ajaxLoading')
		loading.style.display = 'block'
	}
	if (!!options && options.headers) {
		let params = new FormData()
		params.append('username', data.username)
		params.append('password', data.password)
		data = params
	}
	return new Promise((resolve, reject) => {
		instance.post(url, data, options).then(response => {
				if (!options || options.isShowLoading !== false) {
					loading = document.getElementById('ajaxLoading')
					loading.style.display = 'none'
				}
				if (response.respCode.code === 'EDI-10000') {
					resolve(response.data)
				} else if (response.respCode.code == 'EDI-30042') {
					router.push('/login')
				} else {
					Message.error({
						message: response.respCode.message
					})
					reject(response.respCode.code)
				}
			})
			.catch(e => {
				console.log('失败==>', e)
			})
	})
}

export default http
